package com.iflytek.aisol.audit.iflytek.strategy.manage.entity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.persistence.*;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * CLassName: grayConfig
 * Description: 灰度策略配置表
 * Author: wuzhixiang
 * Date: 2024-12-28 14:19
 * Version: 1.0
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Entity
@Table(name = "GrayConfig")
public class GrayConfig implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    /**
     * 灰度名称
     */
    @Column(name = "gray_name")
    private String grayName;
    /**
     * json格式对应如下字段
     *     enable: true
     *     ##指定appId为1才会生效灰度
     *     gray_app_id:
     *       - '1'
     *     gray_rate:
     *       ##配置灰度的服务权重 百分之50导到1 百分之50 导到 11
     *       '1': 1
     *       '11': 1
     */
    @Column(name = "gray_config")
    private String grayConfig;

    /**
     * 灰度类型，支持server和channel两个枚举值
     * server 代表server_instance表中的数据进行灰度
     * channel代表channel_config表中的数据进行灰度
     */
    @Column(name = "gray_type")
    private String grayType;

    /**
     * 描述信息
     */
    @Column(name = "`desc`")
    private String description;

    /**
     * 创建时间
     */
    @Column(name = "create_time")
    private Date createTime = new Date();

    /**
     * 更新时间
     */
    @Column(name = "update_time")
    private Date updateTime = new Date();
}
